#ifndef __TRAPFRAME_H__
#define __TRAPFRAME_H__

#include "types.h"

// 完整的陷阱帧结构，包含所有通用寄存器
typedef struct trapframe {
  // CSR 寄存器
  uint64 sepc;
  uint64 scause;
  uint64 stval;
  uint64 sstatus;
  
  // 通用寄存器（按RISC-V ABI顺序）
  uint64 ra;    // x1
  uint64 sp;    // x2
  uint64 gp;    // x3
  uint64 tp;    // x4
  uint64 t0;    // x5
  uint64 t1;    // x6
  uint64 t2;    // x7
  uint64 s0;    // x8/fp
  uint64 s1;    // x9
  uint64 a0;    // x10
  uint64 a1;    // x11
  uint64 a2;    // x12
  uint64 a3;    // x13
  uint64 a4;    // x14
  uint64 a5;    // x15
  uint64 a6;    // x16
  uint64 a7;    // x17 (系统调用号)
  uint64 s2;    // x18
  uint64 s3;    // x19
  uint64 s4;    // x20
  uint64 s5;    // x21
  uint64 s6;    // x22
  uint64 s7;    // x23
  uint64 s8;    // x24
  uint64 s9;    // x25
  uint64 s10;   // x26
  uint64 s11;   // x27
  uint64 t3;    // x28
  uint64 t4;    // x29
  uint64 t5;    // x30
  uint64 t6;    // x31
} trapframe_t;

#endif // __TRAPFRAME_H__
